<?php namespace Common\Model;

use Hdphp\Model\Model;

//分类表模型
class Cate extends Model{
	
	protected $table = "cate";
	
	protected $validate = array(
		
		array('cname','required','名称不能为空',3,3),
		array('type_taid','required','请选择所属类型',3,3),
	);
	
//添加数据
	public function store(){
//		判断自动验证  
		if(!$this->create()) return FALSE;
		
//		添加数据库
		$this->add();
		return true;
	}
	
	
	
//修改分类
	
	public function stores(){
//		自动验证
		if(!$this->create()) return FALSE;
		
//		修改数据库数据
		$this->save();
		return true;
	}
	
	
//	把父级的id传进来
	public function recu($cid){
		
//		把传进来的id
		$cids = $this->recu($this->get(),$cid);
		
	}
	
	
	
	
	
	
//	添加子集

	public function adds(){
//		自动验证
		if(!$this->create()) return FALSE;
//		添加数据
		$this->add();
		return true;
		
	}
	
	
	

	
	
//排序
	
	public function sotr(){
//		修改排序字段
		$this->save();
		return true;
	}
	
	
	
	
	
	
	
//获得除了自己和父级id的所有id   要用递归试方法

	public function rec($cid){
		
//		利用下面的递归找到传过来的id的所有子集id  再把他赋给一个变量里
		$cids = $this->recSon($this->get(),$cid);
//		把传过来的id也存进去      也就是他的父级的id   这样就是获得的一个分类里面的所有id了（也就是顶级分类下面的所有id   也包括父级本身）
		$cids[] = $cid;
		
//				搜索出来cid下面所有数据（cid和他的子集）   
//				implope(从什么地方拆分，要拆分的数组)把数组差分成字符串
//	也就是找到传进来的那个id的 子集和他自己
		$data = $this->where("cid NOT IN (" . implode(',', $cids) . ")")->get();
		// 查看运行的sql语句  调试的时候使用
		// $log = $this->getQueryLog();
		// p($log);
		
//		把获得数据树状形式显示
		$data = Data::tree($data,'cname');
		
//		return出去
		return $data;
	}
	
	
	
	
//获得父级下面的所有子集id	
	public function recSon($data,$cid){
//		设置一个空数组
		$temp=array();
//		循环数据库
		foreach ($data as $v) {
//			找到数据库pid等于传过来的cid的数据
			if($v['pid']==$cid){
//				把找到的按条数据的cid 存进上面的空数组里面
				$temp[] = $v['cid'];
//				array_merge(合并到那个里面，要合并的值)  也就是把第二个用递归循环出来的值 合并到数组里面
				$temp = array_merge($temp,$this->recSon($data,$v['cid']));
			}
		}
//		如果父级下面没有子集了就把数组return出去
		return $temp;
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
}
 ?>